package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.CiudadDAOSQLServer;
import co.inventario.datos.sqlserver.DepartamentoDAOSQLServer;
import co.inventario.entidad.CiudadDTO;
import co.inventario.entidad.DepartamentoDTO;

public class CiudadNegocio {

	public void crear(CiudadDTO ciudadDTO, Connection connection) throws Exception, SQLException {
		CiudadDAOSQLServer ciudadDAOSQLServer = new CiudadDAOSQLServer();
		CiudadDTO ciudadDTOConsultado = ciudadDAOSQLServer.consultarPorNombre(ciudadDTO, connection);
		if (ciudadDTOConsultado == null) {
			ciudadDAOSQLServer.crear(ciudadDTO, connection);
		} else {
			throw new Exception("La Ciudad que intenta crear, ya existe.");
		}
	}

	public void actualizar(CiudadDTO ciudadDTO, Connection connection) throws Exception, SQLException {
		CiudadDAOSQLServer ciudadDAOSQLServer = new CiudadDAOSQLServer();
		CiudadDTO ciudadDTOConsultado = ciudadDAOSQLServer.consultarPorCodigo(ciudadDTO, connection);
		if (ciudadDTOConsultado != null) {
			ciudadDAOSQLServer.actualizar(ciudadDTO, connection);
		} else {
			throw new Exception("La Ciudad que intenta actualizar, no existe.");
		}
	}

	public CiudadDTO consultarPorCodigo(CiudadDTO ciudadDTO, Connection connection) throws Exception, SQLException {
		CiudadDAOSQLServer ciudadDAOSQLServer = new CiudadDAOSQLServer();
		CiudadDTO ciudadDTOConsultado = ciudadDAOSQLServer.consultarPorCodigo(ciudadDTO, connection);
		return ciudadDTOConsultado;
	}

	public ArrayList<CiudadDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		CiudadDAOSQLServer ciudadDAOSQLServer = new CiudadDAOSQLServer();
		DepartamentoDAOSQLServer departamentoDAOSQLServer = new DepartamentoDAOSQLServer();
		ArrayList<CiudadDTO> ciudadDTOLista = ciudadDAOSQLServer.consultarTodo(connection);
		DepartamentoDTO departamentoDTO = null;
		for (CiudadDTO ciudadDTO : ciudadDTOLista) {
			departamentoDTO = departamentoDAOSQLServer.consultarPorCodigo(ciudadDTO.getDepartamentoDTO(), connection);
			ciudadDTO.setDepartamentoDTO(departamentoDTO);
		}
		return ciudadDTOLista;
	}
}
